Оператор [default]
Описание
Оператор [default] задаёт начальное значение логического узла. Он всегда ставится первым в списке операторов.
Если остальные операторы узла не выполнились (вернули nil, false или ошибку), узел сохраняет значение по умолчанию. Если хотя бы один оператор сработал корректно — значение по умолчанию заменяется.
Пример
-- Узел "N1_sim_found"
--------------------------------------
-- Проверить что Сим-карта находится в слоте
N1_sim_found = { -- Создаём логический узел "simfound"
{
["load-ubus"] = function (nodes) -- Оператор [load-ubus] через системную шину
return { -- Получает от GSM-модемеа статус наличия
object = "tsmodem.driver", -- Сим-карты в слоте
method = "cpin",
params = {}, -- Результат:
} -- {
end, -- "value": "true",
} -- "updated": "1773160342"
} -- "changed": "1773160300"
-- "command": "AT+CPIN?"
-- }
-- Узел "N2_sim_registered"
--------------------------------------
-- Если Сим-карта в слоте, то получить статус регистрации в GSM-сети
N2_sim_registered = {
{
["default"] = function(nodes)
return {
value = "not_registered",
status = "unknown"
}
end
},
{
["load-ubus"] = function(nodes)
return {
ubus = "tsmodem.driver", -- Имя объекта на шине
method = "reg", -- Вызываемый метод
params = {}, -- без параметров
}
end
},
{ -- другие операторы (например, оператор-3)
-- Значение узла N2_sim_registered обновляется в результате выполнения операторов 3 и 4
["operator-3"] = function(nodes)
-- логика оператора
end
},
},
Как это работает
[default]— первый оператор, задаёт начальное значение узла;- Если все следующие операторы не дали результата (
nil,falseили ошибка) — остаётся значение по умолчанию; - Если хоть один следующий оператор сработал корректно — значение по умолчанию заменяется;
- В примере: если
load-ubusне получил статус SIM-карты, узел получает{value = "not_registered", status = "unknown"}. Если получил — значение по умолчанию игнорируется.